/*
 * Balancin.h
 *
 *  Created on: 09/10/2013
 *      Author: juliansci
 */

#ifndef BALANCIN_H_
#define BALANCIN_H_

#include "Elemento.h"
#include "../fisica/BalancinFisica.h"

class Balancin: public Elemento {
private:
	double posSogaIzqX;
	double posSogaIzqY;
	Elemento* sogaIzqUnida;
	double posSogaDerX;
	double posSogaDerY;
	Elemento* sogaDerUnida;
	bool sogaIzqInicial;
	bool sogaDerInicial;

public:
	Balancin(double x, double y, double ancho, double alto, string pathImagen);
	virtual ~Balancin();
	void rotar(double angulo);
	bool aceptaSoga();
	void eliminarSoga(Elemento* soga);
	void agregarSogaInicial(Elemento* soga);
	void agregarSogaFinal(Elemento* soga);
	void mover(double centroX, double centroY);
	int seSuperpone(Elemento* elemento);
	void eliminarReferencias(list<Elemento*>* elementosCanvas);
	int haySogaIzqUnida();
	int haySogaDerUnida();
	bool esBasico();
	void activarSogaPosInicial();
	void activarSogaPosFinal();
	bool sogaEnPosInicial();
	bool sogaEnPosFinal();
	void actualizarReferencias();
	pair<Elemento*,Elemento*> obtenerExtremos();
	void setSogaInicial(Elemento*);
	void setSogaFinal(Elemento*);
	void jointearElemento(b2World* world);
	pair<double,double> obtenerPosicionSoga(int);
};

#endif /* BALANCIN_H_ */
